Шаг 11. Отправляем изменения в удалённый репозиторий

Настало время отправить наши изменения в удалённый репозиторий. Для этого существует команда git push. Но если мы сейчас её пропишем, то получим сообщение об ошибке.

Введена команда git push
Введена команда git push

Так происходит, потому что на удалённом репозитории ещё не существует ветки main, да и вообще там пока что нет никакой ветки. Поэтому, когда мы первый раз отправляем изменения, нам нужно использовать дополнительные опции, в которые мы передадим название ветки для последующей её отправки в удалённый репозиторий. Сразу отметим, что далее можно будет просто использовать команду git push без всяких опций.

Важно: у команды git push есть опция --force (сокращённо -f), которая принудительно отправляет изменения в удалённый репозиторий, игнорируя многие предупреждения и ошибки. Старайтесь её не использовать. Пытайтесь исправить проблему, из-за которой изменения не хотят отправляться на удалённый репозиторий. Бывают исключения, при которых опция нужна, но в этот момент вы должны осознавать, что делаете. Бездумное использование этой опции может привести к непоправимым последствиям.

Для первой отправки изменений пропишем команду вместе с опциями git push --set-upstream origin main. Но чаще всего используют сокращённую версию — git push -u origin main. То есть опция --set-upstream заменяется сокращённой -u. Пропишем сокращённую версию и нажмём Enter.

Введена команда git push -u origin main
Введена команда git push -u origin main

После ввода команды появилась ошибка, в которой сказано, что нам отказано в доступе. Всё дело в том, что на виртуальной машине мы используем несколько аккаунтов GitHub, и аккаунт для заданий был авторизован раньше, чем тот, который используется для написания демонстраций. Возможно, вы столкнётесь с такой же ошибкой, если будете использовать несколько аккаунтов. Поэтому сейчас разберём, как её решить.

Для начала перейдём на сайт GitHub и авторизуемся, если не авторизованы.

Альтернативная главная страница GitHub для авторизованных пользователей
Альтернативная главная страница GitHub для авторизованных пользователей

Далее нажмём на мини-иконку профиля и перейдём в раздел Settings.

Красная стрелка указывает на раздел Settings
Красная стрелка указывает на раздел Settings

Потом перейдём в раздел Developer settings.

Красная стрелка указывает на раздел Developer settings
Красная стрелка указывает на раздел Developer settings

Затем перейдём в раздел Personal access tokens.

Красная стрелка указывает на раздел Personal access tokens
Красная стрелка указывает на раздел Personal access tokens

После этого нажмём ссылку Generate new token.

Красная стрелка указывает на ссылку Generate new token
Красная стрелка указывает на ссылку Generate new token

Дальше вас, возможно, попросят ввести пароль от GitHub — вводим и идём дальше. После ввода пароля нас перекинет на страницу с созданием токена.

Страница создания нового токена
Страница создания нового токена

В поле Note укажите, для чего создаётся этот токен. Мы напишем For access. Чуть ниже в поле Expiration нужно выбрать, сколько будет действовать токен. Желательно установить время действия, но мы немного ленивые, поэтому выберем значение No expiration, что означает без ограничений по времени. В разделе Select scopes нужно выбрать, к чему получит доступ пользователь, у которого будет данный токен. Устанавливаем флажки напротив repo, admin: repo_hook и delete_repo. Далее жмём кнопку Generate token. Вас перебросит на страницу с токеном. Пока что оставим его в покое и пойдём дальше — он понадобится нам чуть позже.

Теперь перейдём на локальном устройстве в раздел «Управление учётными данными Windows».

Одна красная стрелка указывает на поисковую строку, а другая — на совпадения по результатам поиска
Одна красная стрелка указывает на поисковую строку, а другая — на совпадения по результатам поиска

Далее нажмём кнопку «Добавить общие учётные данные».

Красная стрелка указывает на кнопку «Добавить общие учётные данные»
Красная стрелка указывает на кнопку «Добавить общие учётные данные»

В открывшемся окне нужно заполнить поля. В поле «Адрес в Интернете или сети» напишите git:https://github.com. В имя пользователя вставьте, то, что вводите при авторизации на GitHub, а паролем будет тот самый токен, который мы получили ранее. Когда всё заполните, нажмите кнопку ОК.

Красная стрелка указывает на кнопку ОК
Красная стрелка указывает на кнопку ОК

Раздел «Диспетчер учётных данных» можно закрыть, он нам больше не понадобится. Вернёмся снова в Git Bash: повторно пропишем команду git push -u origin main и нажмём Enter.

Введена команда git push -u origin main
Введена команда git push -u origin main

Теперь всё хорошо, ошибки больше нет. Наша ветка с коммитом отправилась в удалённый репозиторий. Перейдём в него, чтобы в этом убедиться.

Страница с удалённым репозиторием
Страница с удалённым репозиторием

Основная часть демонстрации завершена. В следующих шагах будут разобраны более редкие кейсы, которые могут вам пригодиться на работе.